/**
 * 01-file-dir-name.js
 * 实验2：文件路径和目录操作
 * 
 * 1. 在控制台输出 __filename 和 __dirname 两个变量
 * 2. 使用path模块，拼接得到视图文件的路径，并在控制台打印输出
 * 3. 查看其在windows和Linux的输出结果
 */

const path = require('path');

console.log('=== 实验2：文件路径和目录操作 ===\n');

// 1. 输出 __filename 和 __dirname
console.log('1. 内置变量：');
console.log('__filename:', __filename);
console.log('__dirname:', __dirname);
console.log('');

// 2. 使用path模块拼接视图文件路径
console.log('2. 使用path模块拼接路径：');

// 拼接视图文件路径
const viewsPath = path.join(__dirname, 'views', 'index.html');
console.log('视图文件路径:', viewsPath);

// 拼接其他常见路径
const publicPath = path.join(__dirname, 'public', 'css', 'style.css');
console.log('CSS文件路径:', publicPath);

const assetsPath = path.join(__dirname, 'assets', 'images', 'logo.png');
console.log('图片文件路径:', assetsPath);

// 3. 展示不同操作系统的路径差异
console.log('\n3. 路径操作演示：');

// 解析路径
const parsedPath = path.parse(__filename);
console.log('解析当前文件路径:');
console.log('  根目录:', parsedPath.root);
console.log('  目录:', parsedPath.dir);
console.log('  基础名:', parsedPath.base);
console.log('  扩展名:', parsedPath.ext);
console.log('  文件名:', parsedPath.name);

// 获取相对路径
const relativePath = path.relative(__dirname, viewsPath);
console.log('\n相对路径:', relativePath);

// 获取绝对路径
const absolutePath = path.resolve('views', 'index.html');
console.log('绝对路径:', absolutePath);

// 4. 跨平台路径处理
console.log('\n4. 跨平台路径处理：');
console.log('当前操作系统分隔符:', path.sep);
console.log('路径分隔符:', path.delimiter);

// 演示在不同操作系统下的路径
console.log('\n5. 不同操作系统的路径格式：');
console.log('Windows格式示例: C:\\Users\\username\\project\\views\\index.html');
console.log('Linux/Mac格式示例: /home/username/project/views/index.html');
console.log('使用path.join()可以自动处理跨平台差异');

console.log('\n=== 实验完成 ===');
